mir: Handle pointer up/down events without a button mask set (i.e. touch events)
authorRobert Ancell <robert.ancell@canonical.com>
Wed, 5 Nov 2014 22:12:18 +0000 (11:12 +1300)
committerRobert Ancell <robert.ancell@canonical.com>
Wed, 5 Nov 2014 22:15:52 +0000 (11:15 +1300)
The Mir backend was checking for button mask changes to generate the appropriate
GDK event. When Mir generates a touch event it has no button mask. In this case
we'll just generate a primary button event.

gdk/mir/gdkmireventsource.c

index 58b918e69b3bc6e1b9bb48fbd510481fada1504f..e14df97f1e917b72e945f900fb2f275d31116a86 100644 (file)
@@ -311,7 +311,7 @@ handle_motion_event (GdkWindow *window, const MirMotionEvent *event)
     case mir_motion_action_up:
       event_type = event->action == mir_motion_action_down ? GDK_BUTTON_PRESS : GDK_BUTTON_RELEASE;
       changed_button_state = button_state ^ event->button_state;
-      if ((changed_button_state & mir_motion_button_primary) != 0)
+      if (changed_button_state == 0 || (changed_button_state & mir_motion_button_primary) != 0)
         generate_button_event (window, event_type, x, y, GDK_BUTTON_PRIMARY, modifier_state);
       if ((changed_button_state & mir_motion_button_secondary) != 0)
         generate_button_event (window, event_type, x, y, GDK_BUTTON_SECONDARY, modifier_state);